package bankowosc.polaczenie;

import java.math.BigDecimal;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import bankowosc.dane.Kredyt;

public class KredytBD {

	public ArrayList<Kredyt> pobierzKredyty(polacz p, String nr_rach) {
		ArrayList<Kredyt> kredyty = new ArrayList<>();
		Statement stmt = p.getStmt();
		String komenda = "select * from kredyt where nr_rachunku="+nr_rach;
		try {
			ResultSet rs = stmt.executeQuery(komenda);
			while(rs.next()) {
				kredyty.add(new Kredyt(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getInt(4),
						rs.getString(5),rs.getString(6),rs.getFloat(7)));
			}
			rs.close();
			return kredyty;
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public boolean dodajKredytStaly(polacz p, int id_klient, String nr_rach, String rodz, String waluta, int raty, float kwota) {
		Connection c = p.getC();
		BigDecimal rach = new BigDecimal(nr_rach);
		try {
			CallableStatement ctmt = c.prepareCall("{call dodaj_kredyt(?,?,?,?,?,?)}");
			ctmt.setInt(1, id_klient);
			ctmt.setBigDecimal(2, rach);
			ctmt.setString(3, rodz);
			ctmt.setString(4, waluta);
			ctmt.setInt(5, raty);
			ctmt.setFloat(6, kwota);
			ctmt.execute();
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		Harmonogram_splatBD harmsplatbd = new Harmonogram_splatBD();
		for(int i=0; i<raty; i++) {
			harmsplatbd.dodajHarmStaly(p, i+1, kwota, raty);
		}
		return true;
	}
	
	public boolean dodajKredytZmienny(polacz p, int id_klient, String nr_rach, String rodz, String waluta, int raty, float kwota) {
		Connection c = p.getC();
		BigDecimal rach = new BigDecimal(nr_rach);
		try {
			CallableStatement ctmt = c.prepareCall("{call dodaj_kredyt(?,?,?,?,?,?)}");
			ctmt.setInt(1, id_klient);
			ctmt.setBigDecimal(2, rach);
			ctmt.setString(3, rodz);
			ctmt.setString(4, waluta);
			ctmt.setInt(5, raty);
			ctmt.setFloat(6, kwota);
			ctmt.execute();
			
		} catch (SQLException e) {
			e.printStackTrace();
			return false;
		}
		Harmonogram_splatBD harmsplatbd = new Harmonogram_splatBD();
		for(int i=0; i<raty; i++) {
			harmsplatbd.dodajHarmZmienny(p, i+1, kwota, raty);
		}
		return true;
	}
}
